package com.gaogzhen.algorithms4.search;

import edu.princeton.cs.algs4.StdIn;
import edu.princeton.cs.algs4.StdOut;

import java.util.Arrays;

// 导入一个Java库

public class BinarySearch {
    /**
     * 二分查找法：静态方法
     * @param key 参数变量，参数类型int
     * @param a    目标数组
     * @return     key在数组a中的位置；否则返回-1
     */
    public static int rank(int key, int[] a) {
        // 初始化声明语句
        int lo = 0;
        int hi = a.length - 1;
        // 循环
        while (lo <= hi) {
            int mid = (hi - lo) / 2 + lo;
            if (key < a[mid]) hi = mid - 1;
            else if (key > a[mid]) lo = mid + 1;
            else return mid;
        }
        // 返回语句
        return -1;
    }

    public static void main(String[] args) {
        // 初始化数组
        int[] whiteList = {23423, 123, 23 , 324234, 5234, 123, 2424, 2322, 9942, 2323, 2323};
        Arrays.sort(whiteList);
        // 输入
        int i = StdIn.readInt();
        // 输出
        StdOut.println(rank(i, whiteList));
    }
}
